xeeynamo (Normal User)
Pro
Messaggi: 66
Iscritto: 14/03/2008
|
Salve
Stò creando un piccolo programmino e mi sono fermato su una cosa che potrei tranquillamente aggirare, ma che mi farebbe perdere tempo e spazo nel codice.
Allora, ho diverse picturebox (64 per la precisione) create grazie ad un semplice ciclo for che le alloca nella finestra e ci setta un'immagine dentro. Ora il mio problema però stà nella gestione degli eventi! Teoricamente dovrei fare ben 64 eventi e quindi 64 funzioni però dato che gli eventi avranno un contenuto quasi del tutto uguale, non ne vale la pena appesantire l'applicazione e il sorgente.
La prima cosa che mi è venuta in mente è stata una cosa che sicuramente non sarebbe funzionata, ma la posto ugualmente per farvi rendere conto di cosa stò parlando e di cosa ho bisogno:
Codice sorgente - presumibilmente C++ |
... for(int i=0;i<0x40;i++) sprite[i].Click += new System.EventHandler(this.Test(i)); ... public static void Test(int n){ sprite[i] // e qui ci metterò l'operazione da fare }
|
Come risolvere?
|
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Postato originariamente da xeeynamo:
Codice sorgente - presumibilmente C++ |
... for(int i=0;i<0x40;i++) sprite[i].Click += new System.EventHandler(this.Test(i)); ... public static void Test(int n){ sprite[i] // e qui ci metterò l'operazione da fare }
|
Come risolvere? |
Modifica così:
Codice sorgente - presumibilmente C++ |
... for(int i=0;i<0x40;i++) sprite[i].Click += new System.EventHandler(this.Test); ... public static void Test(object sender, EventArgs e){ PictureBox sprite = (PictureBox)sender; //e con sprite ci fai quello che vuoi }
|
|
|
xeeynamo (Normal User)
Pro
Messaggi: 66
Iscritto: 14/03/2008
|
Postato originariamente da manvb.net:
Modifica così:
Codice sorgente - presumibilmente C++ |
... for(int i=0;i<0x40;i++) sprite[i].Click += new System.EventHandler(this.Test); ... public static void Test(object sender, EventArgs e){ PictureBox sprite = (PictureBox)sender; //e con sprite ci fai quello che vuoi }
|
perfetto, ho preso spunto dal codice sorgente e ho fatto una cosa così:
Codice sorgente - presumibilmente C++ |
... for(int i=0;i<0x40;i++){ sprite[i].Click += new System.EventHandler(this.Test); sprite[i].Name = i.ToString(); } ... public static void Test(object sender, EventArgs e){ PictureBox sprite = (PictureBox)sender; sprite[Int32.Parse(p.Name)] // E ci faccio quello che voglio :D }
|
E ovviamente la funzione mi riconosce quale delle 64 picturebox ho selezionato!
Grazie Ultima modifica effettuata da xeeynamo il 18/08/2009 alle 22:22 |
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Di niente!
|
|